package com.probiz.estore.attribute.service.impl;

import com.probiz.estore.attribute.AttributeConstants;
import com.probiz.estore.attribute.dao.ContentAttrValueDao;
import com.probiz.estore.attribute.dao.CustomerAttrValueDao;
import com.probiz.estore.attribute.dao.ProductAttrValueDao;
import com.probiz.estore.attribute.service.AttributeValueManager;
import com.probiz.estore.common.model.attribute.AttributeValue;
import com.probiz.estore.common.model.attribute.BaseAttributeValue;
import com.probiz.estore.common.model.attribute.ContentAttrValue;
import com.probiz.estore.common.model.attribute.CustomerAttrValue;
import com.probiz.estore.common.model.attribute.ProductAttrValue;

public class AttributeValueManagerImpl  implements AttributeValueManager {


	private ContentAttrValueDao contentAttrValueDao = null;
	
	private CustomerAttrValueDao customerAttrValueDao = null;
	
	private ProductAttrValueDao productAttrValueDao = null;
	


	public void setContentAttrValueDao(ContentAttrValueDao contentAttrValueDao) {
		this.contentAttrValueDao = contentAttrValueDao;
	}

	public void setCustomerAttrValueDao(CustomerAttrValueDao customerAttrValueDao) {
		this.customerAttrValueDao = customerAttrValueDao;
	}

	public void setProductAttrValueDao(ProductAttrValueDao productAttrValueDao) {
		this.productAttrValueDao = productAttrValueDao;
	}


	public AttributeValue saveOrUpdate(AttributeValue attributeValue) {
		if(attributeValue instanceof ContentAttrValue){
			contentAttrValueDao.saveOrUpdate((ContentAttrValue)attributeValue);
		}
		else if(attributeValue instanceof CustomerAttrValue){
			customerAttrValueDao.saveOrUpdate((CustomerAttrValue)attributeValue);
		}
		else if(attributeValue instanceof ProductAttrValue){
			productAttrValueDao.saveOrUpdate((ProductAttrValue)attributeValue);
		}

		return attributeValue;
	}

	public BaseAttributeValue getAttributeValueById(Integer id, Integer type) {
		BaseAttributeValue returnValue = null;
		if(type.intValue() == AttributeConstants.MODULE_CONTENT.intValue()){
			returnValue = contentAttrValueDao.getById(id);
		}
		else if(type.intValue() == AttributeConstants.MODULE_CUSTOMER.intValue()){
			returnValue = customerAttrValueDao.getById(id);
		}
		else if(type.intValue() == AttributeConstants.MODULE_PRODUCT.intValue()){
		    returnValue = productAttrValueDao.getById(id);	
		}
		return returnValue;
	}
	
	public void deleteAttributeValues(Integer attributeId, Integer type){
		if(type.intValue() == AttributeConstants.MODULE_CONTENT.intValue()){
			contentAttrValueDao.deleteValues(attributeId);
		}
		else if(type.intValue() == AttributeConstants.MODULE_CUSTOMER.intValue()){
			customerAttrValueDao.deleteValues(attributeId);
		}
		else if(type.intValue() == AttributeConstants.MODULE_PRODUCT.intValue()){
		    productAttrValueDao.deleteValues(attributeId);	
		}
	}

	public ProductAttrValue getProductAttrValue(Integer pId, Integer aId) {
		ProductAttrValue pav =  productAttrValueDao.getProductAttrValue(pId, aId);
		return pav;
	}

}
